<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数提升</title>
    <script>
        /*
          函数提升：
         1、每个作用域都会进行提升操作。
             包括变量和函数在内的所有声明都会在任何代码被执行前先被处理。

         2、函数声明会被提升，但是函数表达式却不会被提升。
         3、函数会首先被提升，然后才是变量
         4、如果函数声明和变量声明的名称相同，此时，var foo; 尽管出现在 function foo(){}
            的声明之前，但它是重复的声明（因此var foo;被忽略了），因为函数声明会被提升到普通变量之前。
             如果是 var foo = 123; 即：声明同时初始化了，那么foo的值为123。

         */

        //函数会被优先提升，然后提升变量，所以结果为1
        //var aa = 1;
        var aa;     //如果没有被赋值，则控制台打印出的还是这个函数
        function aa(){

        }

        console.log(aa);   //如果var aa被赋值为1，则结果为1
        console.log(aa);   //如果var aa只是声明 ，没有赋值，则重复声明了，忽略var aa; 结果为function aa(){}
    </script>
</head>
<body>

</body>
</html>